/*
leetcode 367
给定一个 正整数 num ，编写一个函数，如果 num 是一个完全平方数，则返回 true ，否则返回 false 。
输入：num = 16
输出：true
输入：num = 14
输出：false
*/
#include<bits/stdc++.h>
using namespace std;
class Solution {
public:
    bool isPerfectSquare(int num) {
        if(num<2) return true;
        long left=2,right=num/2;
        long mid,guessSquared;
        while(left<=right){
        	mid=left+(right-left)/2;
        	guessSquared=mid*mid;
        	if(guessSquared==num){
        		return true;
			}
			if(guessSquared<num){
				left=mid+1;
			}else{
				right=mid-1;
			}
		}
		return false;
    }
};